#!usr/bin/env python  
# -*- coding:utf-8 -*-
""" 
@author:robot
@file: four_nums_sum.py 
@version:
@time: 2023/12/28 
"""
Array = [1, 0, -1, 0, -2, 2]
sum_ = 0


def four_sum(array, sum_num):
    array.sort()
    res = []
    length = len(array)
    for i in range(length - 3):
        # 如果当前元素与上一轮循环中的值相同，就跳过本轮循环，继续进行下一轮的判断
        if i != 0 and array[i] == array[i - 1]:
            continue
        # 从第二个数开始计算
        for j in range(i + 1, length - 2):
            # 如果j不等于i+1，那么看j是否等于j+1，如果等于，则跳过当前循环
            if j != i + 1 and array[j] == array[j - 1]: continue
            # 取第3、4个数
            l = j + 1
            r = length - 1
            while l < r:
                # 计算和
                s = array[i] + array[j] + array[l] + array[r]
                # 如果s==sum_num，且结果不在res，则添加结果
                if s == sum_num and [array[i], array[j], array[l], array[r]] not in res:
                    res.append([array[i], array[j], array[l], array[r]])
                    # 继续让左指针向右移动，右指针向左移动
                    l += 1
                    r -= 1
                    # 在移动过程中再使用一个循环不断跳过重复元素
                    while l < r and array[l] == array[l - 1]: l += 1
                    while l < r and array[r] == array[r + 1]: r -= 1
                # 如果和大于sum_，那么第4个数向左移动
                elif s > sum_:
                    r -= 1
                # 否则第3个数向右移动
                else:
                    l += 1
    return res


if __name__ == '__main__':
    print(four_sum(Array, 0))
